import http from '@/utils/http'
var onepassJs = "https://cdn1.huaruisales.com/ghss/onepassh5.js"
async function onePass(data) {
    await initJs(onepassJs)
    return new Promise((resolve, reject) => {
        var opInstance = new GOP({            
            app_id: process.env.VUE_APP_ONEPASS_APPIP, // 在极验后台获取，生成app_id后等待极验审核成功后生效
            timeout: data.timeout || 30000, // 超时时长，默认30000
            pre_init: data.pre_init || true,  // 是否初始化时获取运营商参数，默认为true。 建议开启避免影响认证的响应时间
            sense: data.sense || true // 是否开启安全风控功能 默认为true
        })
        // 调用网关接口前，用户可先调用checkNetInfo 方法获取用户的网络状态; 可选方法
        // 该判断方法在iOS系统上所有网络情况均会返回unknown状态
        var net = opInstance.checkNetInfo()
        if (net !== 'wifi'){
            // 调用网关验证
            // console.log(opInstance.gateway({phone: data.mobile}))
            opInstance.onGatewaySuccess(function(val){
                // data 结构： { process_id:'abcd', phone:'13333333333', accesscode: 'abc' }。
                console.log(val,11)
                // 网关成功，获取校验结果
                // 调用 result 接口， 以下是伪代码示例
                let dataes = {
                    system: data.system,
                    businessType: data.businessType,
                    businessNo: val.process_id,
                    simToken: val.accesscode,
                    mobile: val.phone
                }
                http.post(`${process.env.VUE_APP_BASIS_URL}/simAuth/check`, dataes).then(res => {
                    let resultData = {
                        code: res.resultCode,
                        simAuthToken: res.simAuthToken,
                        net
                    }
                    return resolve(resultData)
                })
            })
            .onGatewayFail(function(){ 
                console.log('onGatewayFail')
                let resultData = {
                    code: '4',
                    net
                }  
                //  网关失败，可以调用短信等其他验证形式
                return resolve(resultData)
            })
            opInstance.gateway({phone: data.mobile})
        } else {
            let resultData = {
                code: '5',
                net
            }  
            // 调用原有认证方式不调用网关验证
            return resolve(resultData)
        }
    })
}
// 引入文件
async function initJs(jsUrl) {
    return await new Promise((resolve) => {
        let script = document.createElement('script')
        let header = document.getElementsByTagName('head')[0]
        script.type = 'text/javascript'
        script.src = jsUrl
        header.appendChild(script)
        script.onload = script.onreadystatechange = function () {
        if (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete') {
          resolve(true)
        }
        script.onload.onload = script.onreadystatechange = null //删除事件处理函数。
      }
    })
}
export default onePass
